package br.com.vti.sisp_sicrim.antigo.controller.tela;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.programa.FuncoesGerais;
import br.com.vti.sisp_sicrim.antigo.controller.programa.Scrpp001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela Idctea06
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Idctea06 {
	private boolean enviada = false;
	private String pagina = "/resources/antigo/jsp/Idctea06.jsp";
	private String jVersaoj;
	private String operacao;
	private String dataCorrente;
	private String p200;
	private String horaCorrente;
	private String jDadSn;
	private String jDadEstrangSn;
	private long jRegger;
	private String jDadNumPassaporte;
	private String jDadPaisOrigem;
	private String jDadNome;
	private String jDadPai;
	private String jDadMae;
	private int jDadDia;
	private int jDadMes;
	private int jDadAno;
	private int jMatriculaj;
	private String jSenhaj;
	private String jEmpresaj;
	private String jProgramaj;
	private String mensagem = "";
	private String funcao = "0";
	private String campofocus = "jdadsn";
	private String navegar = "";
	public Boolean temMensagem = false;
	private Result result;
	private Sessao sessao;
	private FuncoesGerais funcoes = new FuncoesGerais();

	// Classes views
	// Classes includes
	public Idctea06() {
		inicializar(false);
	}

	public Idctea06(boolean primeiraVez, Sessao sessao) {
		this.sessao = sessao;
		inicializar(primeiraVez);
	}

	public void inicializar(boolean primeiraVez) {
		if (primeiraVez) {
			jVersaoj = "";
			operacao = "";
			dataCorrente = "";
			p200 = "";
			jDadSn = "";
			jDadEstrangSn = "";
			jRegger = 0;
			jDadNumPassaporte = "";
			jDadPaisOrigem = "";
			jDadNome = "";
			jDadPai = "";
			jDadMae = "";
			jDadDia = 0;
			jDadMes = 0;
			jDadAno = 0;
			jMatriculaj = 0;
			jSenhaj = "";
			jEmpresaj = "";
			jProgramaj = "";
			jEmpresaj = sessao.getScrg001().getWEmpresaw();
			jMatriculaj = sessao.getScrg001().getWMatriculaw();
			jProgramaj = sessao.getScrg001().getWProgramaw();
			jSenhaj = sessao.getScrg001().getWSenhaw();
			jVersaoj = sessao.getScrg001().getWVersaow();
		}
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		dataCorrente = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATE
	}

	public boolean receberTela(boolean primeiraVez, Result result) {
		// faz o tratamento das criticas necessarias para os dados da tela
		// recebida
		this.result = result;
		temMensagem = false;
		if (!primeiraVez) {
			return validar();
		} else {
			return true;
		}
	}

	public void enviarTela(boolean primeiraVez, Result result, String origem) {
		this.enviada = true;
		// rotina para enviar a tela
		// caso esteja setado valores para acoesFinais, executa as classes
		// correspondentes
		this.result = result;
		if (UtilBean.acoesFinais != null && !UtilBean.acoesFinais.isEmpty()) {
			UtilBean.processaAcao();
		} else {
			enviar(result, origem);
		}
	}

	public void enviar(Result result, String origem) {
		// redicionar para o jsp correspondente
		UtilBean.redireciona(pagina, result, origem);
	}

	public void enviarMensagem(String campo, String mensagem) {
		// formatar a mensagem de erro, posicionar no campo informa
		if (campo != null) {
			campofocus = campo;
		} else {
			campofocus = "";
		}
		this.mensagem = mensagem;
		temMensagem = true;
		// enviar(result, origem);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		UtilBean.funcao = this.funcao;
		ValidarFuncao();
		if (temMensagem) {
			return false;
		}
		ValidarOperacao();
		if (temMensagem) {
			return false;
		}
		ValidarWdadSn();
		if (temMensagem) {
			return false;
		}
		ValidarWdadNumPassaporte();
		if (temMensagem) {
			return false;
		}
		ValidarWdadPaisOrigem();
		if (temMensagem) {
			return false;
		}
		ValidarWdadNome();
		if (temMensagem) {
			return false;
		}
		ValidarWdadPai();
		if (temMensagem) {
			return false;
		}
		ValidarWdadMae();
		if (temMensagem) {
			return false;
		}
		ValidarWdadDia();
		if (temMensagem) {
			return false;
		}
		ValidarWdadMes();
		if (temMensagem) {
			return false;
		}
		ValidarWdadAno();
		if (temMensagem) {
			return false;
		}
		ValidarWmatriculaw();
		if (temMensagem) {
			return false;
		}
		sessao.getScrg001().setWEmpresaw(this.jEmpresaj);
		sessao.getScrg001().setWMatriculaw(this.jMatriculaj);
		sessao.getScrg001().setWProgramaw(this.jProgramaj);
		sessao.getScrg001().setWSenhaw(this.jSenhaj);
		sessao.getScrg001().setWVersaow(this.jVersaoj);
		return true;
	}

	private void ValidarFuncao() {
		// Consist�ncia F00funcao
		if (!(UtilBean.funcao.equals(UtilBean.ctt_processa) || UtilBean.funcao.equals(UtilBean.ctt_ajuda) || UtilBean.funcao.equals(UtilBean.ctt_pf2))) {
			enviarMensagem(null, "TECLA INVALIDA");
			return;
		}
	}

	private void ValidarOperacao() {
		// Consist�ncia F00OPERACAO
		if (operacao.equals("CAD")) {
			Scrpp001 scrpp001 = new Scrpp001(result, sessao);
			scrpp001.executar(null);
		}
	}

	private void ValidarWdadSn() {
		// Consist�ncia F00#DAD-SN
		if (jDadSn.equals("N") || jDadSn.equals("N") || jDadSn.trim().equals("")) {
			Scrpp001 scrpp001 = new Scrpp001(result, sessao);
			scrpp001.executar(null);
		}
	}

	private void ValidarWdadNumPassaporte() {
		// Consist�ncia F00#DAD-NUM-PASSAPORTE
		if (jDadEstrangSn.equals("S") || jDadEstrangSn.equals("S")) {
			if (jDadNumPassaporte.trim().equals("")) {
				enviarMensagem("jdadnumpassaporte", "ENTRE COM O NUMERO DO PASSPORTE");
				return;
			}
		}
	}

	private void ValidarWdadPaisOrigem() {
		// Consist�ncia F00#DAD-PAIS-ORIGEM
		if (jDadPaisOrigem.trim().equals("")) {
			if (jDadEstrangSn.equals("S")) {
				enviarMensagem("jdadpaisorigem", "INFORME O PAIS DE ORIGEM");
				return;
			} else {
				enviarMensagem("jdadpaisorigem", "INFORME O ORGAO EMISSOR SSP-??");
				return;
			}
		}
	}

	private void ValidarWdadNome() {
		// Consist�ncia F00#DAD-NOME
		int al = 7;
		if (jDadNome.trim().equals("")) {
			enviarMensagem("jdadnome", "FORNECA O NOME DO INDIVIDUO");
			return;
		}
		funcoes.sissanom(jDadNome);
		if (!funcoes.camret.equals("")) {
			enviarMensagem("jdadnome", funcoes.msgret);
			return;
		}
	}

	private void ValidarWdadPai() {
		// Consist�ncia F00#DAD-PAI
		int al = 8;
		if (!jDadPai.trim().equals("")) {
			funcoes.sissanom(jDadPai);
			if (!funcoes.camret.equals("")) {
				enviarMensagem("jdadpai", funcoes.msgret);
				return;
			}
		}
	}

	private void ValidarWdadMae() {
		// Consist�ncia F00#DAD-MAE
		int al = 9;
		if (jDadPai.trim().equals("") && jDadMae.trim().equals("")) {
			enviarMensagem("jdadmae", "FORNECA O NOME DO PAI OU DA MAE");
			return;
		}
		if (!jDadMae.trim().equals("")) {
			funcoes.sissanom(jDadMae);
			if (!funcoes.camret.equals("")) {
				enviarMensagem("jdadmae", funcoes.msgret);
				return;
			}
		}
	}

	private void ValidarWdadDia() {
		// Consist�ncia F00#DAD-DIA
		if (jDadDia == 0 || jDadDia > 31) {
			enviarMensagem("jdaddia", "DIA INVALIDO");
			return;
		}
	}

	private void ValidarWdadMes() {
		// Consist�ncia F00#DAD-MES
		if (jDadMes == 0 || jDadMes > 12) {
			enviarMensagem("jdadmes", "MES INVALIDO");
			return;
		}
	}

	private void ValidarWdadAno() {
		// Consist�ncia F00#DAD-ANO
		if (jDadAno == 0 || jDadAno < 1850) {
			enviarMensagem("jdadano", "ANO INVALIDO");
			return;
		}
	}

	private void ValidarWmatriculaw() {
		// Consist�ncia F00#MATRICULA#
		if (jMatriculaj == 0 && jDadSn.equals("S")) {
			enviarMensagem("jmatriculaj", "ENTRE COM SUA MATRICULA");
			return;
		}
	}

	public String getJversaoj() {
		return jVersaoj;
	}

	public void setJversaoj(String jVersaoj) {
		this.jVersaoj = jVersaoj;
	}

	public String getOperacao() {
		return operacao;
	}

	public void setOperacao(String operacao) {
		this.operacao = operacao;
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) {
		this.dataCorrente = dataCorrente;
	}

	public String getP200() {
		return p200;
	}

	public void setP200(String p200) {
		this.p200 = p200;
	}

	public String getJdadsn() {
		return jDadSn;
	}

	public void setJdadsn(String jDadSn) {
		this.jDadSn = jDadSn;
	}

	public String getJdadestrangsn() {
		return jDadEstrangSn;
	}

	public void setJdadestrangsn(String jDadEstrangSn) {
		this.jDadEstrangSn = jDadEstrangSn;
	}

	public long getJregger() {
		return jRegger;
	}

	public void setJregger(long jRegger) {
		this.jRegger = jRegger;
	}

	public String getJdadnumpassaporte() {
		return jDadNumPassaporte;
	}

	public void setJdadnumpassaporte(String jDadNumPassaporte) {
		this.jDadNumPassaporte = jDadNumPassaporte;
	}

	public String getJdadpaisorigem() {
		return jDadPaisOrigem;
	}

	public void setJdadpaisorigem(String jDadPaisOrigem) {
		this.jDadPaisOrigem = jDadPaisOrigem;
	}

	public String getJdadnome() {
		return jDadNome;
	}

	public void setJdadnome(String jDadNome) {
		this.jDadNome = jDadNome;
	}

	public String getJdadpai() {
		return jDadPai;
	}

	public void setJdadpai(String jDadPai) {
		this.jDadPai = jDadPai;
	}

	public String getJdadmae() {
		return jDadMae;
	}

	public void setJdadmae(String jDadMae) {
		this.jDadMae = jDadMae;
	}

	public int getJdaddia() {
		return jDadDia;
	}

	public void setJdaddia(int jDadDia) {
		this.jDadDia = jDadDia;
	}

	public int getJdadmes() {
		return jDadMes;
	}

	public void setJdadmes(int jDadMes) {
		this.jDadMes = jDadMes;
	}

	public int getJdadano() {
		return jDadAno;
	}

	public void setJdadano(int jDadAno) {
		this.jDadAno = jDadAno;
	}

	public int getJmatriculaj() {
		return jMatriculaj;
	}

	public void setJmatriculaj(int jMatriculaj) {
		this.jMatriculaj = jMatriculaj;
	}

	public String getJsenhaj() {
		return jSenhaj;
	}

	public void setJsenhaj(String jSenhaj) {
		this.jSenhaj = jSenhaj;
	}

	public String getJempresaj() {
		return jEmpresaj;
	}

	public void setJempresaj(String jEmpresaj) {
		this.jEmpresaj = jEmpresaj;
	}

	public String getJprogramaj() {
		return jProgramaj;
	}

	public void setJprogramaj(String jProgramaj) {
		this.jProgramaj = jProgramaj;
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) {
		this.horaCorrente = horaCorrente;
	}

	public String getFuncao() {
		return funcao;
	}

	public void setFuncao(String funcao) {
		this.funcao = funcao;
	}

	public String getCampofocus() {
		return campofocus;
	}

	public void setCampofocus(String campofocus) {
		this.campofocus = campofocus;
	}

	public String getNavegar() {
		return navegar;
	}

	public void setNavegar(String navegar) {
		this.navegar = navegar;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public void setMensagemSaida(String mensagem) {
		this.mensagem = mensagem;
	}

	public boolean getEnviada() {
		return this.enviada;
	}

	public void setSessao(Sessao sessao) {
		this.sessao = sessao;
	}
}
